package hdservice;

import devmodel.MapObject;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 * Created by IntelliJ IDEA.
 *
 * @author Dong Shufeng
 *         Date:2011-09-14
 */
public interface HdFacade extends Remote {
    void initial() throws RemoteException;

    /**
     * backup current day's messages to history database
     *
     * @throws java.rmi.RemoteException runtime exception
     */
    void backupLog() throws RemoteException;

    /**
     * load current day's plan to real time database
     *
     * @throws java.rmi.RemoteException runtime exception
     */
    void loadPlan() throws RemoteException;

    /**
     * load current day's command curves in real time database
     *
     * @throws java.rmi.RemoteException runtime exception
     */
    void loadCmd() throws RemoteException;

    /**
     * load current day's measurement(related to command) to real time database
     *
     * @throws java.rmi.RemoteException runtime exception
     */
    void loadMeasure() throws RemoteException;

    /**
     * Analysis statistics information.
     *
     * @throws java.rmi.RemoteException runtime exception
     */
    void doStatisticAnalysis() throws RemoteException;

    /**
     * Redo analysis of month statistics information.
     *
     * @param month Any time of the month to be reanalysised
     * @throws java.rmi.RemoteException runtime exception
     */
    void redoMonthStatisticAnalysis(Long month) throws RemoteException;

    /**
     * Check measurement points which are automatically generated by this service
     *
     * @throws RemoteException runtime exception
     */
    void checkFesPoint() throws RemoteException;

    /**
     * check whether there are enough plans
     *
     * @throws RemoteException runtime exception
     */
    void checkPlan() throws RemoteException;

    void checkFesPointByDev(MapObject dev) throws RemoteException;

    void deleteFesPoint(MapObject dev) throws RemoteException;
}
